home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / programs.arc / QSORT.PRO < prev    next >
Encoding:
Prolog Source  |  1986-10-07  |  562 b   |  30 lines

  1. /*Program Qsort */
  2. /*
  3.   Enter the goal:  qsort([4,8,2,7],ANS).
  4. */
  5. domains
  6.     l = integer*
  7.  
  8. predicates
  9.     split(integer,l,l,l)
  10.     append(l,l,l)
  11.     qsort(l,l)
  12.  
  13. clauses
  14.     append([],X,X).
  15.     append([H|L],L1,[H|L2]) :-
  16.         append(L,L1,L2).
  17.  
  18.     split(_,[],[],[]).
  19.     split(H,[A|X],[A|Y],Z) :-
  20.         A <= H,!, split(H,X,Y,Z).
  21.     split(H,[A|X],Y,[A|Z]) :-
  22.         A > H,!, split(H,X,Y,Z).
  23.  
  24.     qsort([],[]).
  25.     qsort([H|T],S) :-
  26.         split(H,T,A,B),
  27.         qsort(A,A1),
  28.         qsort(B,B1),
  29.         append(A1,[H|B1],S).
  30.